/*
* sop设备与组件关联表模块
*/
const express = require('express');
const router = express.Router();
// 引入数据库
const db = require("../../config/db");
// 引入时间包
const moment = require("moment");
// 引入方法库
const { toCamelCase, toUnderlineCase, verifyToken, recursionGenerateTree } = require("../../config/utils");
// 引入日志
const log = require("../log");

// 修改*sop设备与组件关联表*
router.put("/updateDeviceComponent", (req, res) => {
    console.log("=========== 修改*sop设备与组件关联表*接口============");
    // 获取参数
    let { oldId, parentId, deptId, orderNum } = req.body;
    // 截取id字段
    parentId = parentId.split("-")[1];
    deptId = deptId.split("-")[1];
    oldId = oldId ? oldId.split("-")[1] : null;
    /// 修改数据库
    // 判断当前设备是否已存在该组件
    let sql_check = `select * from sop_device_sop_components where device_id = '${parentId}' and component_id = '${deptId}'`;
    db.query("修改*sop设备与组件关联表*判断当前设备是否已存在该组件", sql_check, (err, sql_check_result) => {
        if (err) {
            res.send({ code: 500, msg: "修改*sop设备与组件关联表*判断当前设备是否已存在该组件失败", data: err });
            return;
        }
        if (sql_check_result.length > 0) {
            // 判断是否是同一个组件，如果是，则修改排序
            if (sql_check_result[0].component_id == oldId) {
                // 修改排序
                let sql = `update sop_device_sop_components set order_num = '${orderNum}' where device_id = '${parentId}' and component_id = '${deptId}'`;
                db.query("修改*sop设备与组件关联表排序*", sql, (err1, result) => {
                    if (err1) {
                        res.send({ code: 500, msg: "修改*sop设备与组件关联表排序*失败", data: err1 });
                        return;
                    }
                    if (result.affectedRows > 0) {
                        res.send({ code: 200, msg: "修改*sop设备与组件关联表排序*成功" });
                    } else {
                        res.send({ code: 500, msg: "修改*sop设备与组件关联表排序*失败" });
                    }
                })
            } else {
                res.send({ code: 500, msg: "当前设备已存在该组件，无法修改" });
            }

        } else {
            // 判断是否第一次添加组件
            if (oldId) {
                // 删除当前设备与组件的关联
                let sql_delete = `delete from sop_device_sop_components where device_id = '${parentId}' and component_id = '${oldId}'`;
                db.query("修改*sop设备与组件关联表*删除当前设备与组件的关联", sql_delete, (err1, result) => {
                    if (err1) {
                        res.send({ code: 500, msg: "修改*sop设备与组件关联表*删除当前设备与组件的关联失败", data: err1 });
                        return;
                    }
                    if (result.affectedRows > 0) {
                        // 添加当前设备与组件的关联
                        let sql_add = `insert into sop_device_sop_components (device_id, component_id, order_num) values ('${parentId}', '${deptId}', '${orderNum}')`;
                        db.query("修改*sop设备与组件关联表*添加当前设备与组件的关联", sql_add, (err2, result2) => {
                            if (err2) {
                                res.send({ code: 500, msg: "修改*sop设备与组件关联表*添加当前设备与组件的关联失败", data: err2 });
                                return;
                            }
                            if (result2.affectedRows > 0) {
                                res.send({ code: 200, msg: "修改*sop设备与组件关联表*成功" });
                            } else {
                                res.send({ code: 500, msg: "修改*sop设备与组件关联表*失败" });
                            }
                        })
                    } else {
                        res.send({ code: 500, msg: "修改*sop设备与组件关联表*失败" })
                    }
                })
            } else {
                // 添加当前设备与组件的关联
                let sql_add = `insert into sop_device_sop_components (device_id, component_id, order_num) values ('${parentId}', '${deptId}', '${orderNum}')`;
                db.query("添加当前设备与组件的关联", sql_add, (err2, result2) => {
                    if (err2) {
                        res.send({ code: 500, msg: "添加当前设备与组件的关联失败", data: err2 });
                        return;
                    }
                    if (result2.affectedRows > 0) {
                        res.send({ code: 200, msg: "添加当前设备与组件的关联成功" });
                    } else {
                        res.send({ code: 500, msg: "添加当前设备与组件的关联失败" });
                    }
                })
            }

        }
    })
})


// 删除*sop*设备与组件关联表*
router.delete("/deleteDeviceComponent/:deviceId/:componentId", (req, res) => {
    console.log("=========== 删除*sop*设备与组件关联表*接口============");
    // 获取参数
    let { componentId, deviceId } = req.params;
    // 删除设备与组件关联表数据库
    let sql = `delete from sop_device_sop_components where device_id = '${deviceId}' and component_id = '${componentId}'`;
    db.query("删除*sop*设备与组件关联表*", sql, (err, result) => {
        if (err) {
            res.send({ code: 500, msg: "删除*sop*设备与组件关联表*失败", data: err });
            return;
        }
        if (result.affectedRows > 0) {
            res.send({ code: 200, msg: "删除*sop*设备与组件关联表*成功" });
        } else {
            res.send({ code: 500, msg: "删除*sop*设备与组件关联表*失败" });
        }

    })
})

// 查询*sop*设备与组件关联表，组件是否被重复使用*
router.get("/checkDeviceComponent/:deviceId/:componentId", (req, res) => {
    console.log("=========== 查询*sop*设备与组件关联表，组件是否被重复使用*接口============");
    // 获取参数
    let { componentId, deviceId } = req.params;
    // 判断设备组件关联表是否存在两个以上数据  LIMIT 1 OFFSET 1;  -- 存在第二条时返回1，否则无结果
    let sql_check = `select * from sop_device_sop_components where component_id = '${componentId}' LIMIT 1 OFFSET 1`;
    db.query("查询*sop*设备与组件关联表，组件是否被重复使用*", sql_check, (err, result) => {
        if (err) {
            res.send({ code: 500, msg: "查询*sop*设备与组件关联表，组件是否被重复使用*失败", data: err });
            return;
        }
        if (result.length > 0) {
            res.send({ code: 500, msg: "该组件已被重复使用，无法删除该工序！" });
        }else {
            res.send({ code: 200, msg: "当前设备未存在该组件，可以修改" });
        }
    })
})

module.exports = router;